package cn.wolfcode.trip.base.service;

import cn.wolfcode.trip.base.domain.GoodsCollection;
import cn.wolfcode.trip.base.domain.User;
import cn.wolfcode.trip.base.query.MyFansOrMyConcernsQuery;
import cn.wolfcode.trip.base.query.QueryObject;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

public interface IUserService {
    /**
     * 通过用户id查询到用户的id
     * @param userId
     * @return
     */
    User getUser(Long userId);
    /**
     * 保存
     * @param user
     */
    void save(User user);

    /**
     * 登录
     */
    User login(String email,String password);

    /**
     * 分页
     * @param qo
     * @return
     */
    PageInfo<User> query(QueryObject qo);

    /**
     * 更新
     * @param user
     */
    void update(User user);

    /**
     * 这是登录用户关注另一个用户的方法
     * @param concernedId
     */
    void saveConcerned(Long concernedId,Long userId);

    /**
     * 通过当前登录用户的id 查询到他关注的所有用户的id
     * @return
     */
    List<Integer> selectByUserIdForConcerneds(Long userId);

    /**
     * 查询出用户的粉丝数
     * @param concernedId
     * @return
     */
    Integer selectFans(Long concernedId);

    /**
     * 查询出用户的关注数
     * @param concernedId
     * @return
     */
    Integer selectconcerneds(Long concernedId);

    /**
     * 当前登录用户取关注
     * @param userId
     * @param concernedId
     */
    void deleteConcerned(Long userId, Long concernedId);

    /**
     * 账号绑定微信
     * @param openId
     * @param userId
     */
    void bindWechat(String openId,Long userId);

    //判断是否绑定了微信
    Boolean isBindedWx(String openId);
    //根据openId获取用户信息
    User getUserInfoByOpenId(String openId);

    User getUserInfoById(Long parseLong);


    /**
     * 升级为会员或变成普通成员
     */
    void becomeOrLostVip(Long id  , Boolean vip);



    /**
     * 查询用户商品收藏
     * @return
     */
    List<GoodsCollection> selectForGoodsCollection();

    User selectById(Long id);

   PageInfo listUsersConcerned(MyFansOrMyConcernsQuery qo);

    PageInfo listUsersFans(MyFansOrMyConcernsQuery qo);
}
